【MediaPipe】Multi Hand Trackingの左手右手の判定をもう少し詳しく見てみた
カフェチームの山本です。
以前の記事で、MediaPipe Multi Hand Trackingのv0.7.5を動かし、変更点を調べました。そこで、新しく右手左手の判定(Handedness)が加わっていることを確認しました。
前回は、その結果を利用して骨格と手の対応付けようとしました。しかし、出力される左右の判定が不正確な場合が多く、対応付けがうまくできないことがありました。
今回は、この右手左手の判定を詳しく見て、どのような状況なら正しく判定できる/できないのかを調べます。
(MediaPipeに関連する記事はこちらにまとめてあります。)
動画で確認
結果
右手左手の判定の様子は、下の動画のようでした。使用したMediaPipeのバージョンはv0.7.5です。
左上の数値が右手らしさを表すスコア(左手と判定されると高くなり、右手と判断されると小さくなる)を表示しています。手を囲う四角や数値の色は、スコアが高いほど赤く、低いほど青く表示され、中間の場合は紫色に近づきます。
今回の場合、動画中に右手が表示されているため、スコア値はずっと1で、色は赤であるのが理想的な正しい判定ということになります。
分析
結果の動画を見てみると以下のことがわかりました。
- 判定の精度が手の形に大きく依存している。平たいと間違えやすく(0~2秒目)、少し指を曲げてると正しく判定されやすい(2~4秒目)。
- ただし、指を曲げていても、判定結果は完全に安定しているわけではなく、たまに判定が逆になるフレームがある。
- 正しく判定できているフレームは、高いスコア(0.99以上など)を出力する。
- 正しく判定できていないフレームは、中間的な値(0.4など)や、かなり低い値(0.1など)になる場合がある。
考察
上の結果から、正しい判定を得るためには、(例えば)以下のような工夫をする必要がありそうです。
- 判定のスコア値が高く、確実に判定できるところだけを利用する
- 一定時間のウィンドウ内でスコアを時間方向に平均して、一定以上になったら判定できたとみなす
まとめ
今回は、手の左右の判定(Handedness)の様子を動画で確認しました。検出結果をそのまま利用するのは少し難しく、工夫が必要であることがわかりました。